/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package persistence.factory;

import persistence.entites.POI;
import persistence.entites.Type;
import persistence.entites.Tag;
import java.util.Map;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import persistence.dao.mysql.POIDAO;
import persistence.dao.mysql.TagDAO;
import persistence.dao.mysql.TypeDAO;

/**
 *
 * @author Wadjahdi Marc
 */
class MySQLDAOFactory extends AbstractDAOFactory {

    private EntityManagerFactory emf = null;
    private EntityManager em = null;

    /**
     * Redéfinition de la connexion en utilisant MySQL
     * @param properties Contient les données permetant la connexion
     */
    @Override
    public boolean createConnection(Map<String, String> properties) {

        emf = Persistence.createEntityManagerFactory("DAO_AndroidPU");

        this.em = emf.createEntityManager();

        if (em == null) {
            return false;
        }

        return true;
    }

    /**
     * Redéfinition de la deconnexion en utilisant MySQL
     */
    @Override
    public void closeConnection() {
        if (em != null) {
            em.close();
        }
        if (emf != null) {
            emf.close();
        }
    }

    /**
     * Permet d'obtenir un TypeDAO en utilisant MySQL
     * @return
     */
    @Override
    public TypeDAO getTypeDAO() {
        return new TypeDAO(em,Type.class);
    }

    /**
     * Permet d'obtenir un POIDAO en utilisant MySQL
     * @return
     */
    @Override
    public POIDAO getPOIDAO() {
        return new POIDAO(em, POI.class);
    }

    /**
     * Permet d'obtenir un TagDAO en utilisant MySQL
     * @return
     */
    @Override
    public TagDAO getTagDAO() {
        return new TagDAO(em, Tag.class);
    }
}
